Search Results: "Robert Collins"

15 September 2009

Robert Collins: 16 Aug 2009


Hudson seemed quite nice when I was looking at how drizzle use it. I proposed it to the squid project to replace a collection of cron scripts and we re now in the final stages of deployment: Hudson is running, doing test builds. We are now polishing the deployment, tweaking where and how often reports are made, and adding more coverage to the build farm. I thought I d post a few observations about the friction involved in getting it up and running. Understand that I think its a lovely product these blemishes are really quite minor. Installation of the master machine on Ubuntu add an apt repository, apt-get update, apt-get install. Installation of the master machine on CentOS 5.2 (Now 5.3): make a user by hand, download a .war file, create an init.d script by copy-and-adjusting an example off the web. Plenty of room to improve here. Installing slave machines: make a user by hand, add an rc.local entry to run java on slave.jar as that new user. This could be more polished Installing a FreeBSD 6.4 slave: manually download various java sources to my laptop, scp them up to the FreeBSD machine, build *java* overnight, then make a user, add an rc.local entry etc. _Painful_. The next thing we noticed was that the model in Hudson doesn t really expose platforms but we want to test on a broad array of architectures, vendors and releases. i386-Ubuntu-intrepid building doesn t imply that i386-Debian-lenny will build. We started putting in tags on the slaves that will let us say this build is for amd64-CentOS-5.2 , so that if we have multiple machines for a platform, we ll have some redundancy, and so that its easy to get a sense of whats failing. This had some trouble its very manual, and as its manually entered data it can get out of date quite easily. So in the weekend I set out make a plugin, and ran into some yak shaving. Hudson plugins use maven2 to build and deploy. So I added the maven2 plugin to my eclipse (after updating eclipse to get the shiniest bzr-eclipse), and found the first bug issue 1580 maven2 and teamplugins in eclipse 3.5 don t play all that nice. Push. Removing bzr-eclipse temporarily allowed eclipse s maven plugin to work, but for some reason many dependencies were not found, and various discussions found on the net suggest manually adding them to the CLASSPATH for the project but not how to identify which ones they were. Pop. So, I switched to netbeans a 200MB download, as Ubuntu only has 6.5 in the archive. netbeans has the ability to treat a maven2 project as a directly editable project. I have to say that it works beautifully. Push. I made a new plugin, looked around for an appropriate interface, (DynamicLabellers, designed for exactly our intended use). Sadly, in my test environment, it didn t work the master didn t call into the plugin at all, and no node labels were attached. Push. Grab the source for hudson itself, find the trick-for-newcomers here do a full build outside netbeans, in netbeans open main/war as a project, and main/core as well, not just the top level pom.xml. To run, with main/war selected in the project list hit the debug button. However changes made to the main/core sources are not deployed until you build them (F11) the debug environment looks nearly identical to a real environment. Pop. There is a buglet in DynamicLabeller support in Hudson, where inconsistent code between general slave support and the master node Hudson.java causes different behaviour with dynamic labels. Specifically the master node will never get dynamic labels. So I fixed this, cleaned up the code to remove the duplication as much as possible (there are comments in the code base that different synchronisation styles are needed for some reason) and submitted upstream. Pop. I ll make the plugin for squid pretty some evening this week, and we should be able to start asking for volunteers for the squid build farm. Yay!

Robert Collins: 31 Aug 2009


Hi Rich! Re hour+long unit tests I agree that you need a comprehensive test suite, and that it should test all the dark and hidden corners of your code base. But time is not free! A long test suite inhibits:
  • cycle time the fastest you can release a hot fix to a customer
  • developer productivity you can t forget about a patch till its passed the regression test suite
  • community involvement if it takes an hour to run the test suite, an opportunistic developer that wanted to tweak something in your code will have walked away long ago Note that these points are orthogonal to whether developers edit-test cycle runs some or all tests, or whether you use a CI tool, or a test-commit tool, or some other workflow. All that said though, I m extremely interested in *why* any given test suite takes hours: does it need to? What is it doing? Can you decrease the time by 90% and coverage by 2%? I got another response back, which talks about keeping the working set of tests @ about 5 minutes long and splitting the rest off (via declared metadata on each test) into run after commit or during CI . This has merits for reducing the burden on a developer in their test-commit cycle, but as I claim above, I believe there is still an overhead from those other tests that are pending execution at some later time. From a LEAN perspective, the cycle time is very important. Another important thing is handoffs. Each time we hand over something (e.g. a code change that I *think* works because it passed my local tests), there is a cost. Handing over to a machine to do CI is just as expensive as handing to a colleague. Add that contributors sending in patches from the internet may not hang around to find out that their patch *fails* in your CI build, and you can see why I think CI tools are an adjunct to keeping a clean trunk, rather than a key tool. The key tool is to not commit regressions :) Oh, and I certainly accept that test suites should be comprehensive I just don t accept that more time == more coverage, or that there isn t a trade off between comprehensive and timeliness.
  • Robert Collins: 30 Aug 2009


    Made some time to hack the results: config-manager 0.4 released, re-uploaded to debian (it was removed due to some confusion a while back). This most notably drops the hard dependency on pybaz and adds specific-revision support for bzr. subunit snapshot packaging sorted out to work better with subunit from Ubuntu/Debian. This latest snapshot has nested progress and subunit2gtk included. PQM got a bit of a cleanup:
  • The status region shown during merges is ~ twice as tall now.
  • if the precommit_hook outputs subunit it will be picked up automatically and shown in the status region.
  • all deprecation warnings in python2.6 are cleaned up
  • Pending bugfixes were merged from Tim Cole and Daniel Watkins thanks guys!
  • Robert Collins: 27 Aug 2009


    Does your test suite take too long (e.g. 5 minutes). Or did it and you solved it? Or it doesn t but its getting worse? Tell me more, I d like to know :-)

    Robert Collins: New blog location


    My blog has moved: http://rbtcollins.wordpress.com/. If you re syndicating me, please update to this location; if you don t thats fine advogato will be syndicating the blog indefinitely, but doesn t support comments. Mega thanks to Jeff for doing an export from advogato for me :)

    31 August 2009

    Robert Collins: 31 Aug 2009

    Hi Rich! Re hour+long unit tests I agree that you need a comprehensive test suite, and that it should test all the dark and hidden corners of your code base. But time is not free! A long test suite inhibits:
  • cycle time - the fastest you can release a hot fix to a customer
  • developer productivity - you can't forget about a patch till its passed the regression test suite
  • community involvement - if it takes an hour to run the test suite, an opportunistic developer that wanted to tweak something in your code will have walked away long ago Note that these points are orthogonal to whether developers edit-test cycle runs some or all tests, or whether you use a CI tool, or a test-commit tool, or some other workflow. All that said though, I'm extremely interested in *why* any given test suite takes hours: does it need to? What is it doing? Can you decrease the time by 90% and coverage by 2%? I got another response back, which talks about keeping the working set of tests @ about 5 minutes long and splitting the rest off (via declared metadata on each test) into 'run after commit or during CI'. This has merits for reducing the burden on a developer in their test-commit cycle, but as I claim above, I believe there is still an overhead from those other tests that are pending execution at some later time. From a LEAN perspective, the cycle time is very important. Another important thing is handoffs. Each time we hand over something (e.g. a code change that I *think* works because it passed my local tests), there is a cost. Handing over to a machine to do CI is just as expensive as handing to a colleague. Add that contributors sending in patches from the internet may not hang around to find out that their patch *fails* in your CI build, and you can see why I think CI tools are an adjunct to keeping a clean trunk, rather than a key tool. The key tool is to not commit regressions :) Oh, and I certainly accept that test suites should be comprehensive... I just don't accept that more time == more coverage, or that there isn't a trade off between comprehensive and timeliness.
  • 30 August 2009

    Robert Collins: 30 Aug 2009

    Made some time to hack... the results: config-manager 0.4 released, re-uploaded to debian (it was removed due to some confusion a while back). This most notably drops the hard dependency on pybaz and adds specific-revision support for bzr. subunit snapshot packaging sorted out to work better with subunit from Ubuntu/Debian. This latest snapshot has nested progress and subunit2gtk included. PQM got a bit of a cleanup:
  • The status region shown during merges is ~ twice as tall now.
  • if the precommit_hook outputs subunit it will be picked up automatically and shown in the status region.
  • all deprecation warnings in python2.6 are cleaned up
  • Pending bugfixes were merged from Tim Cole and Daniel Watkins - thanks guys!
  • 25 May 2009

    Robert Collins: 25 May 2009

    I'm leaving UDS early due to a loss in my family - I have to travel now to get to the funeral. Folk that I had specific meetings/planned discussiongs lined up with I have tried to contact in person, and this post is intended to act as a catchall for anyone I didn't find.

    7 May 2009

    Robert Collins: 7 May 2009

    My desktop machine blew up, so I got a lovely fresh install of Jaunty. And, X and Gnome still disagreed by default about my actual screeen size... it was unreadably small with the default fonts. I've posted the following instructions before - these are basically unchanged except that the location of the fonts dialog has moved. Tip for folk that would like X to show fonts (i.e. the GDM log in screen) in the correct size: Teach X about the dpi setting! Step 1: run xdpyinfo and look for the dimensions: line. There will be something like this: dimensions: 1280x768 pixels (266x161 millimeters) resolution: 122x121 dots per inch Grab a ruler and measure the screen you have. If it matches the millimeters reported by X, then skip step 2. Step 2: edit /etc/X11/xorg.conf, and locate your Monitor section: Section "Monitor" Identifier "Generic Monitor" Option "DPMS" DisplaySize 265 160 EndSection Add in a DisplaySize like I have there. Now logout of your GUI and restart X - you can run /etc/init.d/ g,k dm restart from the console, or do what I do - just hit ctrl-alt-bkspace so it restarts. Your login screen should change appearance slightly - either the fonts and regions will get bigger if your dpi was set too low, or vice verca. Step 3: (For KDE users, someone please tell me what it should be, for GNOME read on)... Run xdpyinfo again and find the Resolution: line. Ignore the fact that it may not be square, grab one of the two numbers ( I suggest the higher).. Go to System, Preferences, Appearance, and the Font tab. Select 'Details'. There is a Resolution field there. Put in the single number you chose. Changes should take effect immediately. Applications I know of which benefit from having this set correctly: xpdf, gnome-* (panels are readable etc etc), firefox.

    2 April 2009

    Robert Collins: 2 Apr 2009

    Launchpad has just upgraded their bzr server to bzr 1.13. This makes the signficant performance improvements in bzr 1.13 available when pushing and pulling from branches hosted on launchpad. 1.14 has further improvements in the client, so if pushing to launchpad is slow please consider upgrading your client to 1.14 (which about to enter beta).

    29 March 2009

    Robert Collins: 29 Mar 2009

    This has irritated me for a while in configure.ac. You've probably seen this pattern before:
    AC_INIT([foo], [0.0.1])
    MAJOR=0
    MINOR=0
    MICRO=1
    MY_VERSION=$MAJOR.$MINOR.$MICRO
    AC_SUBST(MAJOR)
    AC_SUBST(MINOR)
    AC_SUBST(MICRO)
    AC_SUBST(MY_VERSION)
    
    I finally hit my annoyance threshold for this, and the answer is pretty obvious. (If its not, or you think there is a simpler one, give it a shot - I'd like something more pithy).
    AC_DEFUN([MAJOR], [0])
    AC_DEFUN([MINOR], [0])
    AC_DEFUN([MICRO], [1])
    AC_DEFUN([MY_VERSION], [MAJOR.MINOR.MICRO])
    AC_INIT([foo], [MY_VERSION])
    AC_SUBST(MAJOR)
    AC_SUBST(MINOR)
    AC_SUBST(MICRO)
    AC_SUBST(MY_VERSION)
    
    Its not a big deal to be duplicating version numbers, but not duplicating at all is nicer.

    11 March 2009

    Robert Collins: 11 Mar 2009

    Certain amount of hyperbole, but still a great perspective on software-as-a-service vs service-as-a-service in Iceland. Microsoft Skull-fucks Iceland s Economy, Contracts Syphilis Entertaining too :)

    8 September 2008

    Robert Collins: 9 Sep 2008

    Customer service... and vodafone. Something fundamentally missing here. Vodafone's website is slow - 50% of the time you can't even login. 15-20 simple page clicks. Ringing customer service - you get a IVR system that is intensely frustrating. It can't handle simple things like "Your website sucks" (it asks if you want to inquire about iphone 3g's). 10 minutes later and it actually offers a menu. Finally, some way to get through to a human. Having stopped doing paper bills, you have to sign up to this website; several thousand words of legal terms and conditions later - 99% unrelated to paying bills - and you can't configure it to email you, unless it also SMS's you. WTF. Customer service don't know why this is required. And the website doesn't tell you its required, it just refuses to accept the form unless it's ticked. Seriously, someone setup a viable, flexible, mobile provider in australia, with good international roaming - give me a ring.

    30 August 2008

    Martin F. Krafft: Recovering a lost default route

    Tired and under the influence of beer, I tried to remove the currently broken IPv6 default route from my primary mailserver via an SSH connection and accidentally executed instead:
    ip r d default
    # I meant: ip -6 r d default
    
    
    Unfortunately, I didn t immediately realise what I had done, and then it was too late. Robert Collins told me that I could have saved the session because even without a default route, packets still reach the machine. Unfortunately, due to Nagle s algorithm, you pretty much only have one shot, so the next time this happens to me (or you), quickly type
    ip r a default via <gateway>
    
    
    into a separate window, then copy and paste it into the SSH session and you may get lucky. Update: one lesson I learnt from this is to add specific routes for at least the IPv6 tunnel peer, and possibly another machine (or two) under my control out there. I now have that in place on all machines I own. NP: The Phoenix Foundation: Pegasus

    31 July 2008

    Robert Collins: 1 Aug 2008

    Well, advertising for the win right? Was looking up a song I vaguely remembered via youtube, and I noticed that > 30% of the search results are taken up by a single advert for a film (Liam Neeson in Taken, ironically) which sits at the top right, leaving the rest of the column blank. SHEESH

    22 July 2008

    MJ Ray: LugRadio Live Event Review


    LUGRadioLive 2008 by sheilaellen (cc-by-2.0) This weekend, I learnt lots of things while at LugRadio Live in Wolverhampton. One thing was the surprising delay between posting something on this site and it actually appearing in the feed on my mobile phone. Another is that I can’t post to my new blog hosting from my mobile phone, which I’ll debug Real Soon Now. So, this is a bit later than when I first wrote it and it’s now one post instead of seven or so… Thanks to some unexplained delay travelling through Birmingham, I walked into LugRadio Live during the Introduction. The venue was generally pretty good, but the stage obstructed the entrance the acoustics in the atrium only seemed to work for the four gents. No idea what they said: I got past the stage into the audience and it finished almost immediately. For the first talk session, I went to see Rufus Pollock of Open Knowledge Foundation introduce a plan for the Comprehensive Knowledge Archive Network. Seems like a good idea. I’ve tons of questions, but I can’t quite get them into words, I don’t know when I’ll have time for this and I’m not sure they really matter anyway. I think I’ll mention CKAN to some librarians anyway and see what they make of it. I expected Emma Jane Hogbin’s “Form an orderly queue, ladies” to start an argument with the usual chix silliness but I was pleasantly surprised by how reasonable the advice was. In fact, the speaker also criticised the “chix” movements, although it appeared she participates in some women-only clubs, so not a 100% win for equality there. Sadly, much of the talk has been overshadowed in my mind by the memory of a giant furry racoon walking in unexpectedly, so I’ll probably grab the video of the LRL-USA version sometime soon. James Hooker’s talk titled “Taming the dragons — entrepreneurship and VCs” launched venturex as described on his own site already (along with more talk descriptions). It was an interesting demo, but it requires hackers to sell some votes in their companies to Venture Capitalists, which I believe is a bad thing for free software developers to do. We need to look more at a form of social entrepreneurism.</soapbox> I tried to ask a question, but the terrible atrium acoustics did funny things with my not-so-good hearing and I lost my way somewhat. At the end of that talk, I got chatting to an interesting web developer from Leicester who also forsook The Gong-a-Thong Lightbulb Talk Extravaganza and headed up to the Lightning Stage for Robert Collins and the Bzr talk. As well as some glimpses of how it’s changed since forking from tla, it was interesting to see a real (imperfect) demo and a non-Emacs version control GUI. The web interface for casual users to submit patches sounded very interesting and I also learned that some people pronounce “svn” like “Sven”. Most things that Robert thought were benefits sounded like drawbacks to me, so I’ll stay with git for now. Steve Lamb’s Green IT talk was the last presentation I saw. This talk really disappointed me because it seemed to be skewed towards the corporate governance nonsense instead of seeing Green IT as a vital pragmatic step, mentioning points I’d seen put more clearly elsewhere, as well as advertising Vista virtualisation and some panoramic webcam from Microsoft (who employ him) that doesn’t work with any free software, according to a deserved verbal shoe-ing in the Q+A. Only thing I remember that seems useful: charging from USB is more efficient than using wallwarts. Is that right? Finally, the main event: LugRadio Live and Unleashed. It opened with the shock announcement that LRL will continue into 2009, as announced elsewhere already. The rest of the madness will presumably appear online shortly and I don’t remember it well enough to do it justice… A tech conference crossed with a rocking gig by the strangest boyband ever, with a cheerleading racoon and some very cool people. I’ll try to be at LRL 2009. Will you be there? Were you at LRL this last weekend?

    11 July 2008

    Robert Collins: 11 Jul 2008

    What the git vs bzr discussion is about IMO is usability. The following blog post about DTrace on linux talks about the same issue, and I'd like to use Bryan's words: "Over and over again, we made architectural and technical design decisions that would yield an instrumentation framework that would be not just safe, powerful and flexible, but also usable. The subtle bit here is that many of those decisions were not at the surface of the system (where the discussion on the Linux list seems to be currently mired), but in its guts." -> "Over and over again, we made architectural and technical design decisions that would yield a Distributed VCS be not just safe, powerful and flexible, but also usable. The subtle bit here is that many of those decisions were not at the surface of the system (where the discussions going on at the moment seem to be currently mired), but in its guts."

    10 July 2008

    Robert Collins: 10 Jul 2008

    I keep running into folk whom I knew of, that use bzr, but I did not know that they use bzr. Right now there is a lot of discussion going on about DVCS in various projects. While I imagine most bzr users just want to get on with their coding (after all thats what bzr is good at :))... it would be fantastic if you could blog that you use it, and folk at GUADEC wear the T-shirt! Also, I'm at GUADEC, and I'm extremely happy to answer questions from anyone, bzr user, git user, or even svn user :)

    4 July 2008

    Robert Collins: 4 Jul 2008

    Well, the gauntlet is down (BTW - desktop power integration. Cool!). The use case Ted talks about is actually quite interesting - we were at UDS last month, waiting on a SVN server that was apparently so slow we could have walked to it and copied stuff onto harddisk more quickly. (Really. No kidding). bzr was idling and blocked on network IO the whole time... kudos for the plugin Ted! For my response, may I present a new index format, (branch url) 70% smaller than bzr's current default, equally fast at most workloads, up to 20 times faster at others. I started this this week, and John jumped in in overlapping time periods, but I think it counts! Note that the perfromance wins are a component improvement - other things we haven't addressed yet can make the index improvements less visible. But several early adopters have told me that they see a 25-30% reduction in 'time bzr log > /dev/null' or other commands. To install: bzr branch http://bazaar.launchpad.net/~lifeless/+junk/bzr-index2 ~/.bazaar/plugins/index2 bzr branch https://bazaar.launchpad.net/~jameinel/+junk/pybloom ~/.bazaar/plugins/pybloom To use: cd <repository you want to experiment on> bzr upgrade --btree-plain (or --btree-rich-root for bzr-svn users). A version of this will be going to trunk soon, and it will be able to upgrade from any repository that you have that uses the plugin as long as you keep the plugin installed.

    26 June 2008

    Robert Collins: 27 Jun 2008

    Dear lazyweb number 3. So far, I've asked: high latency net simulations - great answers. python friendly back-end accessible search engines - many answers, none that fit the bill. So I wrote my own :). Today, I shall ask - is there a python-accessible persistent b+tree(or hashtable, or ...) module. Key considerations: - scaling: millions of nodes are needed with low latency access to a nodes value and to determine a nodes absence - indices are write once. (e.g. a group of indices are queried, and data is expired altered by some generational tactic such as combining existing indices into one larger one and discarding the old ones) - reading and writing is suitable for sharply memory constrained environments. ideally only a few 100KB of memory are needed to write a 100K node index, or to read those same 100K nodes back out of a million node index. temporary files during writing are fine. - backend access must either be via a well defined minimal api (e.g. 'needs read, readv, write, rename, delete') or customisable in python - easy installation - if C libraries etc are needed they must be already pervasively available to windows users and Ubuntu/Suse/Redhat/*BSD systems - ideally sorted iteration is available as well, though it could be layered on top - fast, did I mention fast? - stable formats - these indices may last for years unaltered after being written, so any libraries involved need to ensure that the format will be accessible for a long time. (e.g. python's dump/marshal facility fails) sqlite, bdb already fail at this requirements list. snakesql, gadfly, buzhug and rbtree fail too.

    Next.

    Previous.